package com.lam.framework.mybatis;

import java.util.HashMap;
import java.util.Map;

import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.lam.common.utils.StringUtils;

/**
 * 请求参数传递辅助类
 */
public class MybatisRequestHelper {
	
	/** 请求参数存取 */
    private static final ThreadLocal<Map<String, Object>> REQUEST_DATA = new ThreadLocal<>();

    protected static final String TABLE_SUFFIX = "MybatisTableSuffix";
    
    /**
     * 设置请求参数
     *
     * @param requestData 请求参数 MAP 对象
     */
    public static void setRequestData(Map<String, Object> requestData) {
        REQUEST_DATA.set(requestData);
    }
    
    /**
     * 获取请求参数
     *
     * @return 请求参数 MAP 对象
     */
    public static Map<String, Object> getRequestData() {
        return REQUEST_DATA.get();
    }

    /**
     * 设置请求参数
     * @param requestData 请求参数 MAP 对象
     */
    public static void setRequestParameter(String name, Object value) {
    	Map<String, Object> dataMap = REQUEST_DATA.get();
    	if(dataMap == null) {
    		dataMap = new HashMap<>();
    	}
    	dataMap.put(name, value);
        REQUEST_DATA.set(dataMap);
    }
    
    /**
     * 获取请求参数
     * @param param 请求参数
     * @return 请求参数 MAP 对象
     */
    @SuppressWarnings("unchecked")
	public static <T> T getRequestParameter(String name) {
        Map<String, Object> dataMap = getRequestData();
        if (CollectionUtils.isNotEmpty(dataMap)) {
            return (T) dataMap.get(name);
        }
        return null;
    }

    public static void setTableSuffix(String value) {
    	if(StringUtils.isNotBlank(value)) {
    		setRequestParameter(TABLE_SUFFIX, value);
    	}
    }
    
    public static void clearTableSuffix() {
    	Map<String, Object> dataMap = REQUEST_DATA.get();
    	if(CollectionUtils.isNotEmpty(dataMap)) {
    		dataMap.remove(TABLE_SUFFIX);
    	}
    }
    
    public static String getTableSuffix() {
    	return getRequestParameter(TABLE_SUFFIX);
    }
}
